package org.example.pd.mapper;

import io.lettuce.core.dynamic.annotation.Param;
import org.apache.ibatis.annotations.MapKey;
import org.example.pd.domain.*;

import org.example.pd.domain.SchoolMajor;
import org.apache.ibatis.annotations.Mapper;
import org.example.score.domain.Gccch;
import org.example.score.domain.Gcctd;

import java.util.List;
import java.util.Map;

@Mapper
public interface PdMapper {
    // 获取某门类下所有专业
    List<String> getMajorName(String year,String category);

    List<String> getSchool(String year, String majorName);

    // 查询某年所有学校所有专业
    List<SchoolMajor> getAllMajor(String year);

    // 第一志愿率
    List<FirstVolunteer> getFirstVolunteer(String year, List<String> schoolCode, String majorName);

    // 报到率
    List<FirstVolunteer> getAdmissionRate(String year, List<String> schoolCode, String majorName);
    // 优势专业
    List<AdvantageousMajors> getAdvantageousMajors(String year, List<String> schoolCode, String majorName);

    // 转专业情况
    List<TransferMajor> getTransferMajor(String year, List<String> schoolCode, String majorName);

    // 高层次称号
    List<HighLevelTitle> getHighLevelTitle(String year, List<String> schoolCode, String majorName);

    //各学校高层次称号总分
    @MapKey("name")
    Map<String, Double> getHighLevelTitleScore(String year, List<String> schoolCode, String majorName);

    // 高层次团队
    List<HighLevelTeam> getHighLevelTeam(String year, List<String> schoolCode, String majorName);

    //各学校高层次团队总分
    @MapKey("name")
    Map<String, Double> getHighLevelTeamScore(String year, List<String> schoolCode, String majorName);

    // 专任教师数量及结构
    List<FullTimeTeachers> getFullTimeTeachers(String year, List<String> schoolCode, String majorName);

    // 专业教师承担教学情况
    List<FullTimeTeachersTeach> getFullTimeTeachersTeach(String year, List<String> schoolCode, String majorName);

    // 培训进修情况
    List<TeacherTraining> getTeacherTraining(String year, List<String> schoolCode, String majorName);

    // 教育教学研究与改革项目
    List<EduResearchReform> getEduResearchReform(String year, List<String> schoolCode, String majorName);

    // 教学成果奖
    List<TeachingAward> getTeachingAward(String year, List<String> schoolCode, String majorName);

    // 各学校教学成果奖总分
    @MapKey("name")
    Map<String, Double> getTeachingAwardScore(String year, List<String> schoolCode, String majorName);

    // 主持科研项目
    List<LeadResearchProjects> getLeadResearchProjects(String year, List<String> schoolCode, String majorName);

    // 发表论文情况
    List<PublishPaper> getPublishPaper(String year, List<String> schoolCode, String majorName);

    // 专利专著
    List<PatentMonograph> getPatentMonograph(String year, List<String> schoolCode, String majorName);

    // 教师科研成果转化情况
    List<ResTransferStatus> getResTransferStatus(String year, List<String> schoolCode, String majorName);

    // 教师科研成果转化总分
    @MapKey("name")
    Map<String, Double> getResTransferStatusScore(String year, List<String> schoolCode, String majorName);

    // 专业实验教学校内场所情况
    List<LaboratoryCampus> getLaboratoryCampus(String year, List<String> schoolCode, String majorName);

    // 省级及以上本科教学项目建设情况中相关基地情况
    List<ProvincialProjectBase> getProvincialProjectBase(String year, List<String> schoolCode, String majorName);
    // 省级及以上本科教学项目建设情况中相关基地情况-总分
    @MapKey("name")
    Map<String, Double> getProvincialProjectBaseScore(String year, List<String> schoolCode, String majorName);

    // 实习实践实训基地情况
    List<PracticalBaseStatus> getPracticalBaseStatus(String year, List<String> schoolCode, String majorName);

    // 一流课程建设
    List<TopCourse> getTopCourse(String year, List<String> schoolCode, String majorName);
    //一流课程建设-总分
    @MapKey("name")
    Map<String, Double> getTopCourseScore(String year, List<String> schoolCode, String majorName);

    // 教材
    List<Textbook> getTextbook(String year, List<String> schoolCode, String majorName);

    // 信息化课程建设
    List<InfoCourseBuild> getInfoCourseBuild(String tabelName, String year, List<String> schoolCode, String majorName);

    // 参加创新创业训练计划
    List<InnovationParticipation> getInnovationParticipation(String year, List<String> schoolCode, String majorName);

    // 参加教师科研情况
    List<TeacherResPartic> getTeacherResPartic(String year, List<String> schoolCode, String majorName);

    // 本科生交流情况
    List<UndergradExchange> getUndergradExchange(String year, List<String> schoolCode, String majorName);

    // 学习成效
    List<LearnResult> getLearnResult(String year, List<String> schoolCode, String majorName);

    // 毕业综合训练情况
    List<GradCompTraining> getGradCompTraining(String year, List<String> schoolCode, String majorName);

    // 参加毕业综合训练学生数
    List<EmploymentNumber> getTrainingStudent(String year, List<String> schoolCode, String majorName);

    // 指导毕业综合训练教师数
    List<EmploymentNumber> getTrainingTeacher(String year, List<String> schoolCode, String majorName);

    // 就业学生数
    List<EmploymentNumber> getEmploymentNumber(String year, List<String> schoolCode, String majorName);
    // 毕业学生数
    List<EmploymentNumber> getGraduateNumber(String year, List<String> schoolCode, String majorName);
    // 升学学生
    List<EmploymentNumber> getHigherSchoolNumber(String year, List<String> schoolCode, String majorName);

    //就业去向-各省数量
    List<EmploymentDestinations> getEmploymentDestinations(String year, List<String> schoolCode, String majorName);

    //录取分数
    List<AdmissionScore> getAdmissionScore(String year, List<String> schoolCode, String majorName);

    List<String> geySchoolNameByCode(List<String> schoolCode,String year);

}
